<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <meta http-equiv="content-style-type" content="text/css" />
 <meta name="author" content="WarpEnterprises, Arlsair" />
 <meta name="date" content="2003-07-09" />
 <title>ConditionalReader AviSynth Filter</title>
 <link rel="stylesheet" type="text/css" href="../../style.css" />
 <style type="text/css">td {vertical-align:top;}</style>
</head><body>
<h3><a name="ConditionalReader"></a>ConditionalReader</h3>

<tt>ConditionalReader(</tt><i>clip clip, string filename, string variablename [, bool show]</i><tt>)</tt><br />
<br />
<tt>ConditionalReader</tt> erlaubt es Informationen aus einer Datei auszulesen, um eine Variable mit unterschiedlichen Werte f&uuml;r jeden Frame oder f&uuml;r einen bestimmten Bereich zu erhalten.<br />
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Parameter:</b></th></tr>
 <tr><td><i>clip</i></td><td>Der Quell Clip. Dieses wird nicht ver&auml;ndert, es sei denn man setzt <i>show=true</i>.</td></tr>
 <tr><td><i>filename</i></td><td>Hier gibt den Dateipfad zu der Variablendatei, die man setzen will.</td></tr>
 <tr><td><i>variablename</i></td><td>Der Name der Variable, die die importierten Einstellungen enthalten soll.</td></tr>
 <tr><td><i>show</i></td><td>Bei diesem optionalen Parameter wird bei <i>true</i> der &uuml;bergebene Wert im Frame eingeblendet. Standard ist <i>false</i>.</td></tr>
</table>
<br />
<b>Dateiformat:</b><br />
Die Datei ist eine einfache Textdatei. Als Separator reicht ein einfaches Leerzeichen und eine neue Zeile zeigt einen neuen Datensatz an. Es wird nicht auf Gro&szlig;-/Kleinschreibung geachtet.<br />
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Parameter:</b></th></tr>
 <tr><td><i>TYPE &lt;int|float|bool&gt;</i></td><td>Man kann pro Datei nur einen Typ an Daten definieren. Man sollte den Typ immer am Anfang definieren, weil <tt>ConditionalReader</tt> erst nach dem Typ sucht und dann erst die Daten ab da liest. Man kann den Typ nicht zwischendurch wechseln.<br />
                                              Die Typen k&ouml;nnen <i>float</i>, <i>int</i> oder <i>bool</i> sein:
                                              <table border="0">
                                               <tr><td><i>int</i></td><td>Ist eine ganze Zahl und kann wahlweise auch ein Vorzeichen enthalten.</td></tr>
                                               <tr><td><i>float</i></td><td>Ist eine Dezimalzahl, die einen Dezimalpunkt enth&auml;lt. Wahlweise auch ein Vorzeichen oder gefolgt vom <i>e</i> oder <i>E</i> Buchstaben und einer Dezimalzahl. G&uuml;ltige Werte sind z.B. <i>-732.103</i> oder <i>7.12e4</i>.</td></tr>
                                               <tr><td><i>bool</i></td><td>Kann entweder <i>true</i> (wahr) oder <i>false</i> (falsch) sein.</td></tr>
                                              </table></td></tr>
 <tr><td><i>DEFAULT &lt;Wert&gt;</i></td><td>Gibt einen Standardwert f&uuml;r alle Frames an. Diesen sollte man direkt nach der Definition von <i>Type</i> setzen, da er die Werte f&uuml;r alle Frames &uuml;berschreibt. Man kann den Standardwert auch nicht setzen, muss dann aber auch wirklich f&uuml;r alle Frames eine Wert so setzen, da es sonst zu unerwarteten Ergebnissen kommt.</td></tr>
 <tr><td><i>&lt;Framenummer&gt; &lt;Wert&gt;</i></td><td>Dies setzt den <i>Wert</i> nur f&uuml;r den Frame <i>Framenummer</i>.</td></tr>
 <tr><td><i>R &lt;Erster Frame&gt; &lt;Letzter Frame&gt; &lt;Wert&gt;</i></td><td>Dies wendet den <i>Wert</i> auf einen Bereich an Frames an. Sowohl der Startframe als auch der letzte Frame sind im Frame-Bereich enthalten.<td></tr>
 <tr><td><i>I &lt;Erster Frame&gt; &lt;Letzter Frame&gt; &lt;Startwert&gt; &lt;Stopwert&gt;</i></td><td>Dies interpoliert zwischen den beiden Werte &uuml;ber den angegebenen Bereich an Frames. Dies funktioniert nur f&uuml;r <i>int</i> und <i>float</i> Werte. Sowohl der Startframe als auch der letzte Frame sind im Frame-Bereich enthalten.</td></tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="3"><b>Beispiele:</b></th></tr>
 <tr><td><b>Datei.txt:</b><br />
         <tt>Type float<br />
             Default 3.45567<br />
             R 45 300 76.5654<br />
             2 -671.454<br />
             72 -671.454</tt></td><td>Diese Datei liefert Gleitkommazahlen als Werte. Standardm&auml;&szlig;ig ist der Werte <i>3.45567</i>. Von Frame 45 bis 300 ist der Wert aber <i>76.5654</i>. Und der Wert von Frame 2 und 72 ist <i>-671.454</i>.<br />
                                      Wie man sieht, &uuml;berschreiben sp&auml;tere &Auml;nderungen die Einstellungen davor. Dies sieht man gut am Frame 72: obwohl der Frame innerhalb des Bereiches 45-300 ist, wird der Wert sp&auml;ter ge&auml;ndert. W&uuml;rde man zuerst den Frame und dann den Bereich spezifisieren, w&uuml;rde der Wert von <i>-671.454</i> auf <i>76.5654</i> ge&auml;ndert werden.</td></tr>
 <tr><td><tt>ColorBars(512,512)<br />
             Trim(0,500)<br />
             ScriptClip(&quot;Subtitle(String(MeineVar))&quot;)<br />
             ConditionalReader(&quot;Datei.txt&quot;,&quot;MeineVar&quot;,false)</tt></td><td>Hier ein Skript, dass die obigen Datei nutzen w&uuml;rde.<br />
                                                                                              Hier wird der Wert in die Variable &quot;MeineVar&quot; importiert, welche von <tt><a href="subtitle.htm">Subtitle</a></tt> - aufgerufen von <tt><a href="conditionalfilter.htm">ScriptClip</a></tt> wegen dem bedingten Wert - angezeigt wird.</td></tr>
</table>
<br />
<table border="0" cellspacing="5">

 <tr><td><b>AviSynth Skript:</b><br />
         <tt>ColorBars(512,256)<br />
             a1 = Trim(0,600)<br />
             a2 = MessageClip(&quot;Text Clip&quot;)<br />
             Overlay(a1,a2,y=100,x=110,mode=&quot;Subtract&quot;,opacity=0,pc_range=true)<br />
             ConditionalReader(&quot;opacity.txt&quot;,&quot;ol_opacity_offset&quot;,false)<br />
             ConditionalReader(&quot;xoffset.txt&quot;,&quot;ol_x_offset&quot;,false)</tt></td><td>An sich werden nur Schl&uuml;sselframes f&uuml;r <i>x-offset</i> und <i>opacity</i> definiert. Bei Frame 25-&gt;50 wird die Transparenz von 0.0 bis 1.0 skaliert, w&auml;hrend sich der Text von links nach rechts bewegt. Dann bleibt der Text stehen von Frame 50 bis 250 und wandert dann weiter nach rechts und wird dabei ausgeblendet.<br />
                                                                                                   Es ist einfacher, sich den Clip anzusehen, als ihn zu beschreiben ;-)</td></tr>
 <tr><td><b>xoffset.txt:</b><br />
         <tt>Type int<br />
             Default -50<br />
             I 25 50 -50 100<br />
             R 50 250 100<br />
             I 250 275 100 250</tt></td><td>&nbsp;</td></tr>
 <tr><td><b>opacity.txt:</b><br />
         <tt>Type float<br />
             Default 0.0<br />
             I 25 50 0.0 1.0<br />
             R 50 250 1.0<br />
             I 250 275 1.0 0.0</tt></td><td>&nbsp;</td></tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Changelog:</b></th></tr>
 <tr><td><tt>v2.54</tt></td><td>Erstes Release</td></tr>
</table>
<br />
<form action=""><input type="button" value="Zur&uuml;ck" onclick="history.go(-1)" /></form>
</body>
</html>
